#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

class Solution{
    public:
    //水平翻转-->对角线翻转
    void ans1(vector<vector<int>>& matrix){
        int rows = matrix.size();
        //先垂直翻转-->对角翻转（逆时针）
        // for(int i = 0; i != rows; i++){
        //     for(int j = 0; j != rows/2; j++){
        //         swap(matrix[i][j], matrix[i][rows-j-1]);
        //     }
        // }
        //先水平，再对角（顺时针）
        for(int i = 0; i != rows/2; i++){
            for(int j = 0; j != rows; j++){
                swap(matrix[i][j], matrix[rows-i-1][j]);
            }
        }
        // show(matrix);
        for(int i = 0; i != rows; i++){
            for(int j = 0; j != i; j++){
                swap(matrix[i][j], matrix[j][i]);
            }
        }
    }

    void show(vector<vector<int>>& num){
        int len = num.size();
        for(int i = 0; i != len; i++){
            for(int j = 0; j != len-1; j++){
                cout << num[i][j] << " " << ends;
            }
            cout << num[i][len-1] << endl;
        }
    }
};

void test1(){
    Solution s;
    vector<vector<int>> val = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    s.ans1(val);
    s.show(val);
}

int main(void){
    test1();

    return 0;
}